package com.solution.admin.product.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.solution.admin.product.dao.ProductCategoryBrandDao;
import com.solution.admin.product.entity.ProductBrandEntity;
import com.solution.admin.product.entity.ProductCategoryBrandEntity;
import com.solution.admin.product.entity.ProductCategoryEntity;
import com.solution.admin.product.service.ProductCategoryBrandService;
import com.solution.admin.settings.dao.SortDao;
import com.solution.common.dao.BaseDao;
import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;
import com.solution.common.service.impl.BaseServiceImpl;

/**
 * 商品类型关联品牌service实现层
 * @author llp
 * @date 2017-10-10 19:16:53
 */
@Service
public class ProductCategoryBrandServiceImpl extends BaseServiceImpl<ProductCategoryBrandEntity> implements ProductCategoryBrandService {
	@Autowired
	private SortDao sortDao;
	
	/**
	 * 商品类型关联品牌接口
	 */
	@Autowired
	private ProductCategoryBrandDao productCategoryBrandDao;

	protected BaseDao<ProductCategoryBrandEntity> getDao() {
		return this.productCategoryBrandDao;
	}

	/**
	 * 保存商品类型关联品牌
	 * @param productCategoryBrandEntity 商品类型关联品牌实体
	 * @return Long 添加成功商品类型关联品牌的ID
	 * @author llp
	 * @date 2017-10-10 19:16:53
	 */
	public long saveProductCategoryBrand(ProductCategoryBrandEntity productCategoryBrandEntity) {
		productCategoryBrandEntity.setSortNo(sortDao.getMaxSortNo("eb_product_category_brand") + 1);
		return productCategoryBrandDao.saveProductCategoryBrand(productCategoryBrandEntity);
	}

	/**
	 * 分页查询商品类型关联品牌
	 * @param pageParam 分页参数
	 * @param paramMap 查询参数
	 * @return PageBean 分页参数和分页数据
	 * @author llp
	 * @date 2017-10-10 19:16:53
	 */
	@Override
	public PageBean listProductCategoryBrandPage(PageParam pageParam, Map<String, Object> paramMap) {
		return productCategoryBrandDao.listProductCategoryBrandPage(pageParam, paramMap);
	}
	
	/**
	 * 根据ID查询用户信息
	 * @param id 用户id
	 * @return productCategoryBrandEntity 用户对象
	 * @author llp
	 * @date 2017-10-10 19:16:53
	 */
	public ProductCategoryBrandEntity getProductCategoryBrandById(Long id) {
		return productCategoryBrandDao.getById(id.longValue());
	}

	/**
	 * 更新用户
	 * @param productCategoryBrandEntity 用户实体
	 * @return Long 更新是否成功，>1代表更新成功
	 * @author llp
	 * @date 2017-10-10 19:16:53
	 */
	@Override
	public int updateProductCategoryBrand(ProductCategoryBrandEntity productCategoryBrandEntity) {
		return productCategoryBrandDao.updateProductCategoryBrand(productCategoryBrandEntity);
	}
	
	
	/**
	 * 根据条件查询商品类型关联品牌
	 * @param param
	 * @return 数据列表
	 * @author llp
	 * @date 2017-10-10 19:16:53
	 */
	@Override
	public List<ProductCategoryBrandEntity> listProductCategoryBrand( Map<String, Object> param){
		return  productCategoryBrandDao.listProductCategoryBrand(param);
	}
	
	/**
	 * 删除商品类型关联品牌
	 * @param 
	 * @return int 返回删除记录条数
	 * @author llp
	 * @date 2017-10-10 19:16:53
	 */
	public int deleteProductCategoryBrandById(long id){
		return  productCategoryBrandDao.deleteById(id);
	}
	
	/**
	 * 根据父级分类ID，获取其子分类关联的所有品牌列表信息
	 * 
	 * @param parentCategotyId
	 * @return List<ProductBrandEntity>
	 * @author xu_cc
	 * @throws Exception
	 *             exception
	 * @Date 创建时间：2018年3月5日 下午3:41:20
	 */
	public List<ProductBrandEntity> getSubBrandList(Long parentCategotyId) {
		return productCategoryBrandDao.getSubBrandList(parentCategotyId);
	}

	/**
	 * 根据父级分类ID、品牌编码，获取在当前父级分类下，有多少符合条件的子分类
	 * 
	 * @param parentCategoryId
	 * @param brandCode
	 * @return
	 * @author xu_cc
	 * @throws Exception
	 *             exception
	 * @Date 创建时间：2018年3月5日 下午3:46:10
	 */
	public List<ProductCategoryEntity> getSubCategoryList(Long parentCategoryId, String brandCode) {
		Map<String, Object> param = new HashMap<String, Object>();
		param.put("parentCategoryId", parentCategoryId);
		param.put("brandCode", brandCode);
		return productCategoryBrandDao.getSubCategoryList(param);
	}

}
